package org.wheres2.core.contactlist;

import android.location.Location;

/**
 * L'interfaccia definisce le funzioni necessarie per una classe perche' possa essere usata
 * per la memorizzazione di informazioni riguardanti un contatto.
 * 
 * @author
 *
 */

public interface ContactManager {
	
	public static final String USERNAME = "USERNAME";
	public static final String NAME = "NAME";
	public static final String POSITION_REQUEST = "REQUEST";
	public static final String POSITION_SENT = "SENT";
	/**
	 * Imposta lo stato di presenza del contatto.
	 * 
	 * @param online lo stato di presenza, e' true se il contatto e' online
	 */
	public void setPresence(boolean online);
	
	/**
	 * Restituisce l'attuale stato di presenza del contatto
	 * 
	 * @return un boolean rappresentate la presenza, true se il contatto e' online
	 */
	public boolean getPresence();
	
	
	/**
	 * Restituisce il nome del contatto
	 * 
	 * @return una stringa rappresentante il nome
	 */
	public String getName();
	
	
	/**
	 * Setta il nome del contatto
	 * 
	 * @param una stringa rappresentante il nome
	 */
	public void setName(String name);
	
	/**
	 * Restituisce l'username del contatto
	 * 
	 * @return una stringa rappresentante l'username in formato JID
	 */
	public String getUserName();
	
	/**
	 * Restituisce lo stato della richiesta di posizione del contatto
	 * 
	 * @return una stringa rappresentante lo stato delle richieste dal contatto
	 */
	public String getRequest();
	
	/**
	 * Setta lo stato della richiesta di posizione del contatto
	 * 
	 * @param una stringa rappresentante lo stato del contatto
	 */
	public void setSent(String sent);
	
	/**
	 * Restituisce l'invio della posizione del contatto
	 * 
	 * @return una stringa rappresentante l'invido della dal contatto
	 */
	public String getSent();
	
	/**
	 * Setta lo stato dell'invio della posizione del contatto
	 * 
	 * @param una stringa rappresentante lo stato dell'invio della posizione del contatto
	 */
	public void setRequest(String request);
	
	/**
	 * Restituisce la locazione del contatto
	 * 
	 * @return un oggetto di tipo Location che rappresenta la posizione del contatto
	 */
	public Location getLocation();
	
	/**
	 * Setta la posizione del contatto
	 * 
	 * @param location la posizione del contatto
	 */
	public void setLocation(Location location);
	
}
